home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / tape.h < prev    next >
C/C++ Source or Header  |  1991-07-26  |  3KB  |  112 lines

  1. /* 
  2.  * tape.h --
  3.  *
  4.  *    Definitions and macros for tape devices.
  5.  *
  6.  * Copyright 1991 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that this copyright
  10.  * notice appears in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  */
  15.  
  16. #ifndef _TAPE
  17. #define _TAPE
  18.  
  19. #include <sys/types.h>
  20.  
  21. /*   
  22.  * Tape-drive specific commands:
  23.  *
  24.  *   IOC_TAPE_COMMAND        Issue a tape drive specific command
  25.  *   IOC_TAPE_STATUS        Return status info from a tape drive
  26.  */
  27. #define IOC_TAPE            (3 << 16)
  28. #define IOC_TAPE_COMMAND        (IOC_TAPE | 0x1)
  29. #define IOC_TAPE_STATUS            (IOC_TAPE | 0x2)
  30.  
  31. /*
  32.  * Mag tape control, IOC_TAPE_COMMAND
  33.  * The one IN parameter specifies a specific
  34.  * tape command and a repetition count.
  35.  */
  36. typedef struct Dev_TapeCommand {
  37.     int command;
  38.     int count;
  39. } Dev_TapeCommand;
  40.  
  41. #define IOC_TAPE_WEOF            0
  42. #define IOC_TAPE_REWIND            1
  43. #define IOC_TAPE_SKIP_BLOCKS        2
  44. #define IOC_TAPE_SKIP_FILES        3
  45. #define IOC_TAPE_BACKUP_BLOCKS        4
  46. #define IOC_TAPE_BACKUP_FILES        5
  47. #define IOC_TAPE_OFFLINE        6
  48. #define IOC_TAPE_RETENSION        7
  49. #define IOC_TAPE_ERASE            8
  50. #define IOC_TAPE_NO_OP            9
  51. #define IOC_TAPE_DONT_RETENSION        10
  52. #define IOC_TAPE_SKIP_EOD        11
  53. #define IOC_TAPE_GOTO_BLOCK        12
  54. #define IOC_TAPE_LOAD            13
  55. #define IOC_TAPE_UNLOAD            14
  56. #define IOC_TAPE_PREVENT_REMOVAL    15
  57. #define IOC_TAPE_ALLOW_REMOVAL        16
  58.  
  59.  
  60. /*
  61.  * Mag tape status, IOC_TAPE_STATUS
  62.  * This returns status info from drives.
  63.  * Any fields that are not valid will be set to -1.
  64.  * Legal values for drive-specific fields can be found in the header files
  65.  * in /sprite/lib/include/dev.
  66.  *
  67.  * NOTE: error counters may be reset by the device.  For example,
  68.  * the Exabyte will reset the counters when a new tape is loaded,
  69.  * the tape is rewound, or when you switch from reading to writing or
  70.  * vice versa.
  71.  */
  72.  
  73. typedef struct Dev_TapeStatus {
  74.     int        type;        /* Type of tape drive, see below. */
  75.     int        blockSize;    /* Size of physical block. */
  76.     int        position;    /* Current block number. */
  77.     int        remaining;    /* Number of blocks remaining on the tape. */
  78.     int        dataError;    /* Number of data errors -- bad read after
  79.                  * write or bad read. */
  80.     int        readWriteRetry;    /* Number of reads/writes that had to be
  81.                  * retried. */
  82.     int        trackingRetry;    /* Number of tracking retries. */
  83.     Boolean    writeProtect;    /* TRUE if tape is write-protected. */
  84.     int        bufferedMode;    /* Buffered mode.  Value is drive specific. */
  85.     int        speed;        /* Tape speed. Value is drive specific. */
  86.     int        density;    /* Tape density. Value is drive specific. */
  87.     char    serial[16];    /* Serial number of drive. */
  88. } Dev_TapeStatus;
  89.  
  90. /*
  91.  * Stubs to interface to Fs_IOControl
  92.  */
  93. extern ReturnStatus Ioc_TapeStatus();
  94. extern ReturnStatus Ioc_TapeCommand();
  95.  
  96. /*
  97.  * Types for tape drive controllers.
  98.  */
  99.  
  100. #define DEV_TAPE_UNKNOWN    0
  101. #define DEV_TAPE_SYSGEN        1
  102. #define DEV_TAPE_EMULEX        2
  103.  
  104. #define DEV_TAPE_8MM        0x100
  105. #define DEV_TAPE_EXB8200    (DEV_TAPE_8MM | 1)
  106. #define DEV_TAPE_EXB8500    (DEV_TAPE_8MM | 2)
  107.  
  108. #define DEV_TAPE_4MM        0x200
  109. #define DEV_TAPE_TLZ04        (DEV_TAPE_4MM | 1)
  110.  
  111. #endif /* _TAPE */
  112.